package com.breezelin.fmlib.utils;

/**
 * Created by Breeze Lin
 * 2016/10/24 16:23
 * 1linyufeng1@gmail.com
 */

import android.content.Context;
import android.util.DisplayMetrics;
import android.view.WindowManager;

/**
 * 与手机屏幕相关信息获取使用的工具类
 */
public final class ScreenUtils {
	private ScreenUtils() {
		// 私有化构造
	}

	/**
	 * 将dp值转化为px值
	 *
	 * @param context 上下文
	 * @param dpValue dp值
	 */
	public static int dpToPx(Context context, float dpValue) {
		return (int) (dpValue * getDensity(context) + 0.5f);
	}

	/**
	 * 获取屏幕的像素密度
	 * px (pixels)像素 – 是像素，就是屏幕上实际的像素点单位。
	 * dip或dp (device independent pixels)设备独立像素， 与设备屏幕有关。
	 * dpi(dot per inch):屏幕像素密度，每英寸多少像素
	 * <p/>
	 * 换算公式：px = dip * (dpi / 160)
	 * DisplayMetrics中的density = dpi / 160
	 * DisplayMetrics中的densityDpi就是dpi
	 *
	 * @param context 上下文
	 * @return 屏幕像素密度
	 */
	public static float getDensity(Context context) {
		WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics metrics = new DisplayMetrics();
		manager.getDefaultDisplay().getMetrics(metrics);
		return metrics.density;
	}
}
